package com.lichuang.dedao.listenBooks.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lichuang.dedao.listenBooks.entity.InterpreterBook;
import com.lichuang.dedao.listenBooks.entity.ListenBookInterpreter;
import com.lichuang.dedao.listenBooks.entity.ListenBooks;
import com.lichuang.dedao.listenBooks.mapper.InterpreterBookMapper;
import com.lichuang.dedao.listenBooks.mapper.ListenBookInterpreterMapper;
import com.lichuang.dedao.listenBooks.mapper.ListenBooksMapper;
import com.lichuang.dedao.listenBooks.util.BeanUtil;
import com.lichuang.dedao.listenBooks.vo.ListenInterpreterVo;
import io.micrometer.core.instrument.binder.BaseUnits;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 解读人的表
 前端控制器
 * </p>
 *
 * @author kangkang
 * @since 2019-07-12
 */
@RestController
@RequestMapping("//interpreter-book")
public class InterpreterBookController {

    @Autowired
    InterpreterBookMapper interpreterBookMapper;
    //听书和解读人的中间表
    @Autowired
    ListenBookInterpreterMapper listenBookeInterpreterMapper;

    @Autowired
    ListenBooksMapper listenBooksMapper;

    @Autowired
    ListenBookeInterpreterController listenBookeInterpreterController;

    QueryWrapper queryWrapper;


    //根据解读人id，查具体该解读人的信息。
    @RequestMapping("/selectInterpreterOne")
    public InterpreterBook sInterpreterById(@RequestParam("interpreterId") Integer interpreterId){
        InterpreterBook interpreterBook=new InterpreterBook();
        interpreterBook.setInterpreterId(interpreterId);
        queryWrapper=new QueryWrapper(interpreterBook);
        InterpreterBook book= interpreterBookMapper.selectOne(queryWrapper);
        return book;
    }
    //根据解读人的id，解读过的所有听书。
    @RequestMapping("/sInterpreterByListenBook")
    public List<ListenInterpreterVo> listenBooksList(@RequestParam("interpreterId") Integer interpreterId){
        ListenBookInterpreter listenBookInterpreter=new ListenBookInterpreter();
        listenBookInterpreter.setInterpreterId(interpreterId);
         queryWrapper=new QueryWrapper(listenBookInterpreter);
        //根据解读人id，查中间表的书的id。
        List<ListenBookInterpreter> listenBookInterpreters=listenBookeInterpreterMapper.selectList(queryWrapper);
        List<ListenInterpreterVo> listenBooksList=new ArrayList<>();
        List<ListenBooks> listenBooksList1=new ArrayList<>();
        for (ListenBookInterpreter bookInterpreter : listenBookInterpreters) {
            ListenBooks listenBooks=new ListenBooks();
            listenBooks.setListenBooksId(bookInterpreter.getListenBooksId());
            queryWrapper=new QueryWrapper(listenBooks);
            //根据听书的id，查听书的书信息
            ListenBooks listenBooks1=listenBooksMapper.selectOne(queryWrapper);
            listenBooksList1.add(listenBooks1);
        }
        listenBooksList=BeanUtil.copyList(listenBooksList1,ListenInterpreterVo.class);
        for (ListenInterpreterVo listenInterpreterVo : listenBooksList) {
            //调用具体解读人的信息的方法
            InterpreterBook interpreterBook=sInterpreterById(interpreterId);
            listenInterpreterVo.setName(interpreterBook.getName());
            ListenBookInterpreter listenBookInterpreter1=listenBookeInterpreterController.sListenInterBook(listenInterpreterVo.getListenBooksId());
            listenInterpreterVo.setInterTime(listenBookInterpreter1.getInterTime());
        }
        return  listenBooksList;
    }

    //根据解读人的id，查该解读人的总共解读数量
    @RequestMapping("/selectInterpreterBookCount")
    public  int countInterpreterBook(@RequestParam("InterpreterId") Integer InterpreterId){
        ListenBookInterpreter interpreter=new ListenBookInterpreter();
        interpreter.setInterpreterId(InterpreterId);
        queryWrapper=new QueryWrapper(interpreter);
        int count= listenBookeInterpreterMapper.selectCount(queryWrapper);
        return count;
    }


}
